//#include<iostream>
//using namespace std;
//
//int main()
//{
//	int n;
//	cin >> n;
//	int x, px;
//	cin >> x;
//	px = x;
//	int a = 0;
//	while (--n)
//	{
//		int p;
//		cin >> p;
//		if (x <= p) a = p + 1 - px, x = p + 1;
//	}
//	cout << a << endl;
//	return 0;
//}

//#include<iostream>
//using namespace std;
//const int N = 110;
//int out[N];
//
//int main()
//{
//	int n, m;
//	cin >> n >> m;
//	while (m--)
//	{
//		int a, b;
//		cin >> a >> b;
//		out[b]++;
//	}
//	int id = 0;
//	bool flag = false;
//	for (int i = 1; i <= n; i++)
//	{
//		if (out[i] == 0)
//		{
//			if (id == 0) id = i;
//			else
//			{
//				flag = true;
//				break;
//			}
//		}
//	}
//	if (flag || id == 0) cout << "-1" << endl;
//	else cout << id << endl;
//	return 0;
//}

//#include<iostream>
//#include<algorithm>
//using namespace std;
//typedef long long ll;
//const int N = 200010;
//int a[N];
//
//int main()
//{
//	int n;
//	cin >> n;
//	ll sum = 0;
//	for (int i = 1; i <= n; i++) cin >> a[i], sum += a[i];
//	ll avg = sum / n, num1 = sum % n;
//	sort(a + 1, a + n + 1);
//	ll cnt = 0;
//	for (int i = n; i > 0; i--)
//	{
//		if (num1 > 0) cnt += abs(a[i] - (avg + 1)), num1--;
//		else cnt += abs(a[i] - avg);
//	}
//	cout << cnt / 2 << endl;
//	return 0;
//}

#include<iostream>
using namespace std;
const int N = 1000010;
int n;
char s[N];

int main()
{
	cin >> n >> s;
	
	bool flag = true;

	for (int i = 0; i < n - 1; i++)
	{
		if (s[i] - '0' > 1 && s[i + 1] - '0' > 1)
		{
			flag = false;
			break;
		}
		if (s[i] - '0' == 1 && s[i + 1] - '0' > 1 && i != n - 2)
		{
			flag = false;
			break;
		}
	}
	
	int cnt = 0;
	if (s[n - 1] - '0' != 1) cnt = s[n - 1] - '0' + n - 2;
	else cnt = n - 1;

	if (!flag) cout << -1 << endl;
	else cout << cnt % 998244353 << endl;


	return 0;
}